package com.quanyan.place.wrapper;

import com.quanyan.api.APIResponse;
import com.quanyan.orderpay.response.RespPreOrder;
import com.quanyan.place.entity.*;
import com.quanyan.place.entity.apireq.*;
import com.quanyan.place.entity.apiresp.*;


import java.util.List;

/**
 * Created by Kingson.chan on 2016/6/15 0015.
 */
public interface PlaceOrderServiceWrapper {

    APIResponse<RespPlaceOrderInfo> preOrder(ReqPlaceOrderListVo reqPlaceOrderListVo);

    APIResponse<RespPreOrder> pay(ReqPlaceOrderInfo reqPlaceOrderInfo);

    APIResponse<?> orderOperate(ReqOrderOperate reqOrderOperate);

    APIResponse<RespPayInfoList>  getPayInfo(ReqGetPayInfo reqGetPayInfo);

    APIResponse<RespPreOrder> orderPay(ReqOrderPay reqOrderPay);

    APIResponse<RespOrderShare> orderShare(ReqOrderShare reqOrderShare);

    APIResponse<RespInviteUser> inviteUser(ReqInviteUser reqInviteUser);

    APIResponse<RespPreOrder> cardPay(ReqPlaceOrderInfo reqPlaceOrderInfo);

    /**
     * 商家端退款
     */
    APIResponse<?> placeRefund(String reqPlaceOrderId,Integer uid,Integer placeId,Integer customerId) throws Exception;
    
    /**
     * 商家端退款
     */
    APIResponse<?> placeBlockRefund(String reqPlaceOrderId,Integer uid,Integer placeId,Integer customerId) throws Exception;

    APIResponse<?> pollingOrderStatus(String placeOrderId);

    /**
     * 订单结算列表
     * @param reqOrderSetterVo
     * @return
     */
    APIResponse<?> orderSetterList(ReqOrderSetterVo reqOrderSetterVo);

    /**
     * 订单结算任务调度（第三方场馆订单结算）
     *
     * @
     */
    void orderSetterTask();
    /**
     * 结算提现
     * @param reqOrderSetterVo
     */
    APIResponse orderSetterOperate(ReqOrderSetterVo reqOrderSetterVo);

    APIResponse extractRecordList(ReqExtractRecordVo extractRecordVo);

    APIResponse businessCheckAccount(ReqBusinessAccountVo reqVo);

    APIResponse getAccountInfoByPlaceId(Integer supplierId);

    APIResponse getPlaceBySupplierId(Integer supplierId);

    APIResponse updateExtractInfoByExtractNo(ExtractCallBackVo extractVo);

    /** 购物车订单详情展示 **/
    APIResponse getPlaceOrderDetail(String placeOrderId);

}
